package org.hd.rolelist.dao;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

@Repository
@Mapper
public interface RoleListDao {

    /**
     * 获取所有的角色列表
     * @return
     */
    List<Map<String,String>> getRoleList();

    /***
     * 修改角色状态
     * @param roleName
     * @param status
     * @return
     */
    boolean changeRoleStatus(@Param("roleName") String roleName,@Param("status") int status);
    //获取所有的按钮和其父按钮
    List<String> getMenusAndParent();

    /**
     * 检查关联是否存在
     * @param roleName
     * @param rightName
     * @return
     */
    Map<String,String> checkExitRight(@Param("roleName") String roleName,@Param("rightName") String rightName);

    /**
     * 获取父按钮
     * @param rightName
     * @return
     */
    String getParent(@Param("rightName") String rightName);

    /***
     * 插入关系
     * @param roleName
     * @param rightName
     * @return
     */
    boolean insertRoleRight(@Param("roleName") String roleName,@Param("rightName") String rightName);

    /***
     * 删除原来的
     * @param roleName
     * @param rightName
     * @return
     */
    boolean updateRight(@Param("roleName") String roleName,@Param("rightName") String rightName,@Param("oldRight") String oldRight);

    /**
     * 删除某个角色下的权限
     * @param roleName
     * @param rightName
     * @return
     */
    boolean deleteRight(@Param("roleName") String roleName,@Param("rightName") String rightName);

    /**
     * 获取所有的夫按钮
     * @param roleName
     * @return
     */
    List<String> getAllParent(@Param("roleName") String roleName);

    /***
     * 删除角色
     * @param roleName
     * @return
     */
    boolean deleteRole(@Param("roleName") String roleName);

    /***
     * 删除角色权限关系
     * @param roleName
     * @return
     */
    boolean deleteRolePer(@Param("roleName") String roleName);

    /***
     * 查询是否存在角色
     * @param roleName
     * @return
     */
    Map<String,String> checkExitRole(@Param("roleName") String roleName);

    /***
     * 查询父按钮
     * @param per
     * @return
     */
    String getParentLabel(@Param("per") String per);

    /**
     * 插入新的角色
     * @param roleName
     * @param roleId
     * @return
     */
    boolean insertRole(@Param("roleName") String roleName,@Param("roleId") String roleId);

    /**
     * 检查父按钮是否已经插入到关系中了
     * @param roleName
     * @param per
     * @return
     */
    Map<String,String> getExitRoleParentRight(@Param("roleName") String roleName ,@Param("per") String per);
}
